package com.net.xpay.common.manager.stat;

import com.net.common.manager.DomainManager;
import com.net.xpay.common.domain.stat.UserTransStat;
import com.net.xpay.common.model.UserTransStatMonthModel;
import com.net.xpay.common.model.UserTransStatSumModel;
import com.net.xpay.core.model.UserTransStatSearchModel;
import com.net.xpay.common.model.UserUnionTransStatResultModel;
import com.net.xpay.common.model.search.UserUnionTransStatSearchModel;

import java.time.LocalDate;
import java.util.List;


public interface UserTransStatManager extends DomainManager<Long,UserTransStat> {

    /**
     * 尝试通过时间加id获取数据
     * @param day
     * @param userId
     * @return
     */
    UserTransStat findByDayAndUserId(LocalDate day, Long userId);

    /**
     * 分页查询
     * @param searchModel ： 查询条件
     * @return
     */
    List<UserTransStat> search(UserTransStatSearchModel searchModel);

    /**
     * 查询待条件的数据条数
     * @param searchModel
     * @return
     */
    long searchCount(UserTransStatSearchModel searchModel);

    List<UserTransStatMonthModel> sumMonthUserTransStat(int year, int month, Long userId);

    List<UserTransStat> list(UserTransStatSearchModel searchModel);

    UserTransStatSumModel sumUserSafePayTransStat(UserTransStatSearchModel searchModel);
    /**
     *聚合查询日统计
     */
    List<UserUnionTransStatResultModel> searchUnion(UserUnionTransStatSearchModel searchModel);
    /**
     *聚合查询条数
     */
    long searchUnionCount(UserUnionTransStatSearchModel searchModel);
}
